package com.github.prontera.model.request;

import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.NotBlank;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.prontera.domain.enums.OrderAcceptStatusEnum;
import com.github.prontera.domain.enums.OrderStatusEnum;
import com.github.prontera.domain.enums.PayStatusEnum;

import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.ToString;

/**
 * @author Alex
 */
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler", "fieldHandler" }, ignoreUnknown = true)
public class TalentOrderRequest extends RestfulRequest {

	private static final long serialVersionUID = -3286520204644035655L;

	@JsonProperty("id")
	@ApiModelProperty(value = "true", example = "订单id", required = false)
	private Long id;
	
	/**
	 * 状态, 0:待支付, 1:已支付,2:支付失败
	 */
	@ApiModelProperty(value = "状态, 0:待支付, 1:已支付,2:支付失败,3:支付退款")
    private PayStatusEnum payStatus;
	/**
	 * 接受状态, 0:待接受,1:进行中,2:已结束,3:退款中,4:未接受,5:待评价
	 */
	@ApiModelProperty(value = "接受状态, 0:待接受,1:进行中,2:已结束,3:退款中,4:未接受")
    private OrderAcceptStatusEnum acceptStatus;
	/**
	 * 发起方状态,  0:待确认,1:进行中,2:待评价,3:已经结束
	 */
	@ApiModelProperty(value = "发起方状态,  0:待确认,1:进行中,2:待评价,3:已经结束")
    private OrderStatusEnum status;
	
	@JsonProperty("clientId")
	@ApiModelProperty(value = "1", required = false)
	private Long clientId;
	
	@NotNull
	@NotBlank
	@JsonProperty("hasConsume")
	@ApiModelProperty(value = "true", example = "是否是消费端", required = true)
	private boolean hasConsume;
	
	@JsonProperty("hasComment")
	@ApiModelProperty(value = "true", example = "是否评论过", required = true)
	private boolean hasComment=Boolean.FALSE;

	public boolean getHasComment() {
		return hasComment;
	}

	public Long getClientId() {
		return clientId;
	}

	public void setClientId(Long clientId) {
		this.clientId = clientId;
	}

	public void setHasComment(boolean hasComment) {
		this.hasComment = hasComment;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public boolean isHasConsume() {
		return hasConsume;
	}

	public void setHasConsume(boolean hasConsume) {
		this.hasConsume = hasConsume;
	}

	public PayStatusEnum getPayStatus() {
		return payStatus;
	}

	public void setPayStatus(PayStatusEnum payStatus) {
		this.payStatus = payStatus;
	}

	public OrderAcceptStatusEnum getAcceptStatus() {
		return acceptStatus;
	}

	public void setAcceptStatus(OrderAcceptStatusEnum acceptStatus) {
		this.acceptStatus = acceptStatus;
	}

	public OrderStatusEnum getStatus() {
		return status;
	}

	public void setStatus(OrderStatusEnum status) {
		this.status = status;
	}
	
}
